#!/usr/bin/python
# -*- coding: iso-8859-15 -*-

import commands
import re
from iwconfig import IwCfg
from iperf import Iperf
from iwlist2 import IwList
from configlan import ConfigLan
"""
classe intermediare entre l'IHM , la partie mesure , et la base de donnee
pour la partie mesure : iwlist iwconfig et iperd
pour l ihm reception des valeurs et traitement
et pour la BDD stockage des différents resultat

"""
class Gestion:
	def __init__(self,session):
		self.session=session
		self.su=[]
		self.u=""
		self.listdico=[]
		self.regex=""
		self.result_regex=""
		self.dico={}
	
		

	def iwc(self):
		# appel de la classe IWcf qui lance un iwconfig
		test= IwCfg("un")
		inter=self.interface()
		test.iwcfg(inter[0])
		resultat=test.iwcfg(inter[0])
		# retourne le resultat soit pour la BDD soit pour la creation de l image
		return resultat

	def interface(self):
		# fonction recuperant automatique l interface air comme media a utiliser
		result=commands.getoutput('iwconfig')
		regex=re.compile('([\w]{2,8}) *(.*)')
		result_regex=regex.findall(result)
		inter = ''
		for elem in result_regex:
			if elem[1]!='no wireless extensions.':
				regex=re.compile('([a-z]{2,4}\d{1})$')
				result_regex=regex.findall(elem[0])
				if result_regex!=[]:
					inter=result_regex
		if not inter:
			inter = 'wlan0'
		return inter				

	def iwli(self):      
		test =IwList("un")
		# on recupere l interface et on l envoie pour recuperer les cellules d iwlist
		inter=self.interface()
		listdico=test.iwList(inter[0])
		return listdico
### PARTIE INSERANT LES RESULTATS DANS LA BDD 

	def getIwc(self):
		res=self.iwc()
		return res
	
                
	def getIwli(self):
		res=self.iwli()
		return res;

	def getIperf(self,param):
		res=self.ipe(param)
		return res

# fonction recuperant les parameetres pour la configuration/connexion a l AP :
	def config(self,param):
		conf= ConfigLan("un")
		inter=self.interface()
		#resultat=self.iwc()
		param["interface"]=inter[0]
		conf.configlan(param)

	# lancement d iperf
	def ipe(self,param):
		print param	
		testiperf=Iperf("un")
		result=testiperf.iperf(param)
		print result
		return result


if __name__=="__main__":
	param={}
	param["nom"]="test"
	param["mode"]="tcp"
	param["serveur"]="192.168.1.10"
	param["intervalle"]=1
	param["duree"]=10
	param["debit"]=11
	param["windows"]=8		
	test=Gestion("test")
	#test.config(param)
	#test.iwli()
	res=test.iwc()
	print res
	#print "LALALALALLALALALALALALAL"+str(res)
	#test.bddiwc()
	res=test.iwli()
	print res	
	#test.inserbddipe(param)
	#test.iwli()

	#test.ipe(param)


	
	
